package Framework.Intermediarios;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

import Framework.Entidades.Estudiante.AgenteEstudiante;
import Framework.Entidades.PlanEstudio.AgentePlanEstudio;
import Framework.Entidades.PlanEstudio.ImplementacionPlanEstudio;
import Framework.Utilidades.Criterio;
import Framework.Utilidades.CriterioCompuesto;
import Framework.Utilidades.CriterioSimple;


public class IntermediarioPersistenciaRelacionalPlanEstudio extends
		IntermediarioPersistenciaRelacional {

	public IntermediarioPersistenciaRelacionalPlanEstudio() {
	}

	@Override
	public String ArmarConsultaSQLSelectOID(String oid) {
		String select = "SELECT * FROM planEstudio WHERE OIDPlanEstudio = '"
				+ oid + "'";
		return select;
	}

	@Override
	public String ArmarConsultaSQLSelectCriterio(Criterio criterios) {
		String select = "";
		if (criterios instanceof CriterioSimple) {
			CriterioSimple criterioSimple = (CriterioSimple) criterios;
			if (criterioSimple.getValor() == null) {
				select = "SELECT * FROM planEstudio";
			} else {
				select = "SELECT * FROM planEstudio WHERE "
						+ criterioSimple.getAtributo() + " "
						+ criterioSimple.getOperador() + " '"
						+ criterioSimple.getValor() + "'";
			}
			return select; 
		} else if (criterios instanceof CriterioCompuesto) {
			CriterioCompuesto criterioCompuesto = (CriterioCompuesto) criterios;
			CriterioSimple criterioSimple1 = (CriterioSimple) criterioCompuesto
					.getCriterioCompuesto().get(0);
			String operador = (String) criterioCompuesto.getCriterioCompuesto()
					.get(1);
			CriterioSimple criterioSimple2 = (CriterioSimple) criterioCompuesto
					.getCriterioCompuesto().get(2);
			select = "SELECT * FROM estudiante WHERE "
					+ criterioSimple1.getAtributo() + " "
					+ criterioSimple1.getOperador() + " '"
					+ criterioSimple1.getValor() + "' " + operador + " "
					+ criterioSimple2.getAtributo() + " "
					+ criterioSimple2.getOperador() + " '"
					+ criterioSimple2.getValor() + "'";
			return select;
		}
		return select;
	}

	@Override
	public String ArmarConsultaSQLInsert(Object objeto) {
		AgentePlanEstudio agentePlanEstudio = (AgentePlanEstudio) objeto;
		String insert = "INSERT INTO planEstudio (OIDPlanEstudio,codigoPlanEstudio, fechaFinVigencia, nombrePlanEstudio,OIDCarrera) VALUES ('"
				+ agentePlanEstudio.getOID()
				+ "', '"
				+ agentePlanEstudio.getCodPlanEstudio()
				+ "', '"
				+agentePlanEstudio.getFechaFinVigencia()
				+ "', '"
				+ agentePlanEstudio.getNombrePlanEstudio()
				+ "', '"
				+ agentePlanEstudio.getOIDCarrera()
						
				+ "')";
		return insert;
	}

	@Override // update revisar no anda.
	public String ArmarConsultaSQLUpdate(Object objeto) {
		AgenteEstudiante agenteEstudiante = (AgenteEstudiante) objeto;
		String update = "UPDATE planEstudio SET nombre = '"
				+ agenteEstudiante.getNombreEstudiante() + "', apellido = '"
				+ agenteEstudiante.getApellidoEstudiante() + "', dni = '"
				+ agenteEstudiante.getDniEstudiante() + "', estado ='"
				+ agenteEstudiante.getDomicilioEstudiante() + "', localidad = '"
				+ agenteEstudiante.getLegajoPorDefecto() + "', tipolegajo = '"
				+ "'";
		return update;
	}

	@Override
	public String ArmarConsultaSQLDelete(Object objeto) {
		AgentePlanEstudio agentePlanEstudio = (AgentePlanEstudio) objeto;
		String delete = "DELETE FROM planEstudio WHERE OIDPlanEstudio = '"
				+ agentePlanEstudio.getOID() + "'";
		return delete;
	}

	@Override
	public ArrayList ConvertirRegistroAObjeto(ResultSet resultSet) {
		try {
			ArrayList agentes = new ArrayList();
			while (resultSet.next()) {
				ImplementacionPlanEstudio implementacionPlanEstudio = new ImplementacionPlanEstudio();
				AgentePlanEstudio agentePlanEstudio = new AgentePlanEstudio();
				
				agentePlanEstudio
				.setImplementacionPlanEstudio(implementacionPlanEstudio);
		
				
				
		
				agentePlanEstudio.setOID(resultSet.getString("OIDPlanEstudio"));
				agentePlanEstudio.setEsNuevo(false);
				agentePlanEstudio.setCodPlanEstudio(resultSet.getInt("codigoPlanEstudio"));
				agentePlanEstudio.setFechaFinVigencia(resultSet.getString("fechaFinVigencia"));
				agentePlanEstudio.setOIDCarrera(resultSet.getString("OIDCarrera"));
		
				agentes.add(agentePlanEstudio);
			}
			return agentes;
		} catch (SQLException e) {
			Logger.getLogger(
					IntermediarioPersistenciaRelacional.class.getName()).log(
					Level.SEVERE, null, e);
			return null;
		}
	}

	@Override
	public ArrayList BuscarObjetosRelacionados(Criterio criterios) {
		return null;
	}

	@Override
	public void GuardarObjetosRelacionados(ArrayList objeto) {
	}

	public Object CompletarObjeto(String oid, String clase) {
		return null;
	}
}
